package com.lv.service.net

import com.lv.service.network.BaseYgxRsp
import okhttp3.MultipartBody
import okhttp3.RequestBody
import retrofit2.Call
import retrofit2.http.Body
import retrofit2.http.GET
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.Part
import retrofit2.http.PartMap
import retrofit2.http.Query
import retrofit2.http.QueryMap

/**
 * 创建者：ygx
 * 创建日期：2021/9/17 11:02 PM
 * 描述：
 * 首页模块的接口
 */
interface ServiceService {

    @POST("oauth/login")
    fun login(@Body body: LoginByPassWordReqBody): Call<BaseYgxRsp>

    @POST("oauth/loginByCode")
    fun loginByCode(@Body body: LoginByCodeReqBody): Call<BaseYgxRsp>

    @POST("oauth/latestUser")
    fun latestUser(): Call<BaseYgxRsp>

    @GET("hengfuran/findVersionUpdate")
    fun findVersionUpdate(
    ): Call<BaseYgxRsp>

    @POST("hengfuran/findPros")
    fun findPros(@QueryMap map: Map<String, String>): Call<BaseYgxRsp>

    /**
     * 注册
     */
    @POST("hengfuran/registUser")
    fun registUser(@Body body: RegistUserReqBody): Call<BaseYgxRsp>

    @POST("hengfuran/keyToLand")
    fun keyToLand(@Body reqBody: KeyLoginReqBody): Call<BaseYgxRsp>

    @POST("hengfuran/threeLanding")
    fun threeLanding(@Body reqBody: ThreedLoginReqBody): Call<BaseYgxRsp>

    @POST("hengfuran/bindingUser")
    fun bindingUser(@Body map: BindPhoneReqBody): Call<BaseYgxRsp>

    @POST("hengfuran/verifyPhone")
    fun verifyPhone(@Body phone: VerifyPhoneReqBody): Call<BaseYgxRsp>

    /**
     * 完善信息
     */
    @Multipart
    @POST("hengfuran/updateUser")
    fun updateUser(
        @PartMap map: Map<String, @JvmSuppressWildcards RequestBody>,
    ): Call<BaseYgxRsp>

    /**
     * 发送短信验证
     */
    @POST("hengfuran/sendCode")
    fun sendCode(
        @Body body: SendCodeBody
    ): Call<BaseYgxRsp>

    /**
     * 验证验证码
     */
    @POST("hengfuran/verifyCode")
    fun verifyCode(
        @Body body: VerifyCodeBody
    ): Call<BaseYgxRsp>

    /**
     * 发送短信验证-修改公司
     */
    @POST("com/oauth/sendCode")
    fun sendCodeCom(
        @Body body: SendCodeBody
    ): Call<BaseYgxRsp>

    /**
     * 验证验证码-修改公司
     */
    @POST("com/oauth/verifyCode")
    fun verifyCodeCom(
        @Body body: VerifyCodeBody
    ): Call<BaseYgxRsp>

    /**
     *  广告统计
     */
    @POST("system/saveAdStatistics")
    fun saveAdStatistics(@Body body: ADStatisticsReqBody): Call<BaseYgxRsp>

    /**
     * 意见反馈
     */
    @GET("goods/feedback")
    fun feedback(
        @Query("text") text: String,
    ): Call<BaseYgxRsp>

    /**
     * 修改个人信息
     */
    @Multipart
    @POST("clerkrole/updateMyLogo")
    fun updateMyLogo(
        @PartMap map: Map<String, @JvmSuppressWildcards RequestBody>,
        @Part part: List<MultipartBody.Part>
    ): Call<BaseYgxRsp>

    /**
     * 修改个人信息
     */
    @Multipart
    @POST("clerkrole/updateMyMessage")
    fun updateMyMessage(
        @PartMap map: Map<String, @JvmSuppressWildcards RequestBody>,
//        @Part part: List<MultipartBody.Part>
    ): Call<BaseYgxRsp>

    /**
     * 注销个人信息
     */
    @POST("clerkrole/deleteUser")
    fun deleteUser(
        @Body body: UserDeleteReqBody
    ): Call<BaseYgxRsp>

    /**
     * 修改个人信息-业务员修改公司
     */
    @POST("clerkrole/updatePasswordOrPhone")
    fun updatePasswordOrPhone(
        @Body body: CompanyReqBody
    ): Call<BaseYgxRsp>


    /**
     * 查找个数
     */
    @GET("clerkrole/findCount")
    fun findCount(
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>


    /**
     * 查找单个期数
     */
    @GET("clerkrole/findOnePdAndCa")
    fun findOnePdAndCa(
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     *  查看小程序或进件信息
     */
    @GET("clerkrole/findOneSubmit")
    fun findOneSubmit(@QueryMap map: Map<String, String>): Call<BaseYgxRsp>

    /**
     *  亨富然基础信息
     */
    @GET("clerkrole/findhengPros")
    fun findhengPros(@QueryMap map: Map<String, String>): Call<BaseYgxRsp>

    /**
     * 亨富然开户
     */
    @POST("clerkrole/saveHengCompany")
    fun saveHengCompany(@Body body: ClientHFRReqBody): Call<BaseYgxRsp>

    /**
     * 首页头
     */
    @GET("hengfuran/homePage")
    fun homePage(
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 首页尾
     */
    @GET("hengfuran/bottomPage")
    fun bottomPage(
        @Query("page") page: Int,
        @Query("pageSize") pageSize: Int,
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 商品详情
     */
    @GET("hengfuran/findOneGoods")
    fun findOneGoods(
        @Query("spuid") spuid: String
    ): Call<BaseYgxRsp>

    /**
     * 商品详情底部推荐
     */
    @GET("hengfuran/findGoodsbotton")
    fun findGoodsbotton(
        @Query("page") page: Int,
        @Query("pageSize") pageSize: Int,
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 收藏商品/关注公司
     */
    @GET("hengfuran/collectOrAttention")
    fun collectOrAttention(
        @Body body: CollectOrAttentionBody,
    ): Call<BaseYgxRsp>

    /**
     * 商品详情页推荐商品和相似商品
     */
    @GET("hengfuran/findGoodsRemark")
    fun findGoodsRemark(
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 公司详情
     */
    @GET("hengfuran/findOneCompany")
    fun findOneCompany(
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 详情页访问记录
     */
    @GET("hengfuran/findCompanyAccess")
    fun findCompanyAccess(
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 公司产品
     */
    @GET("hengfuran/companyGoods")
    fun companyGoods(
        @Query("page") page: Int,
        @Query("pageSize") pageSize: Int,
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 主推商品
     */
    @GET("hengfuran/promoteGoods")
    fun promoteGoods(
        @Query("page") page: Int,
        @Query("pageSize") pageSize: Int,
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 店铺产品页
     */
    @GET("hengfuran/CompanyDetails")
    fun CompanyDetails(
        @Query("page") page: Int,
        @Query("pageSize") pageSize: Int,
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 搜索引导页
     */
    @GET("hengfuran/searchPagetally")
    fun searchPagetally(
        @Query("page") page: Int,
        @Query("pageSize") pageSize: Int,
        @QueryMap map: Map<String, String>
    ): Call<BaseYgxRsp>

    /**
     * 搜索结果页
     */
    @POST("hengfuran/searchPage")
    fun searchPage(@Body body: SearchPageBody): Call<BaseYgxRsp>

    /**
     * 特惠顶部
     */
    @GET("hengfuran/specialOfferTop")
    fun specialOfferTop(): Call<BaseYgxRsp>

    /**
     * 特惠
     */
    @POST("hengfuran/specialOffer")
    fun specialOffer(@Body body: PageCategoryBody): Call<BaseYgxRsp>

    /**
     * 新公司
     */
    @GET("hengfuran/newCompany")
    fun newCompany(
        @Query("page") page: Int,
        @Query("pageSize") pageSize: Int,
    ): Call<BaseYgxRsp>

    /**
     * 查询banner
     */
    @GET("hengfuran/findAllBanner")
    fun findAllBanner(
        @Query("code") code: String
    ): Call<BaseYgxRsp>

    /**
     * 品牌工厂顶部
     */
    @POST("hengfuran/brandFacTop")
    fun brandFacTop(@Body body: PageIdBody): Call<BaseYgxRsp>

    /**
     * 品牌工厂
     */
    @POST("hengfuran/brandFac")
    fun brandFac(@Body body: PageBrandBody): Call<BaseYgxRsp>

    /**
     * 必找工厂
     */
    @POST("hengfuran/mustFac")
    fun mustFac(@Body body: PageBrandBody): Call<BaseYgxRsp>

    /**
     * 本地工厂
     */
    @POST("hengfuran/localFac")
    fun localFac(@Body body: PageBrandBody): Call<BaseYgxRsp>

    /**
     * 批发好货
     */
    @POST("hengfuran/saleByBulk")
    fun saleByBulk(@Body body: PageNameIdBody): Call<BaseYgxRsp>

    /**
     * 品牌热卖
     */
    @POST("hengfuran/brandHot")
    fun brandHot(@Body body: BrandHotBody): Call<BaseYgxRsp>

    /**
     * 品牌热卖查看更多
     */
    @POST("hengfuran/manybrand")
    fun manybrand(@Body body: BrandHotBody): Call<BaseYgxRsp>

    /**
     * 附近商品
     */
    @POST("hengfuran/localGoods")
    fun localGoods(@Body body: PageBrandBody): Call<BaseYgxRsp>

    /**
     * 热销 顶部
     */
    @POST("hengfuran/salehotTop")
    fun salehotTop(): Call<BaseYgxRsp>

    /**
     * 热销
     */
    @POST("hengfuran/salehot")
    fun salehot(@Body body: PageCategoryBody): Call<BaseYgxRsp>

}